package com.example.kotlincoroutines.kotlin

import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.delay
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

/**
 * 什么是协程
 *
 * 打印结果：
 * 主线程:main
 * 协程开始:DefaultDispatcher-worker-1
 * 协程结束:DefaultDispatcher-worker-1
 */
fun main() {
    //创建一个协程,协程依赖于线程，但与线程没什么关系
    //Dispatchers 调度器
    CoroutineScope(Dispatchers.IO).launch {
        test()
//        withContext(Dispatchers.Main){
//            println("协程切换到主线程,不使用handler:${Thread.currentThread().name}")
//        }
    }

    println("主线程:${Thread.currentThread().name}")
    Thread.sleep(3000)
}

/**
 * 协程代码块，只能在协程中调用
 */

suspend fun test() {
    println("协程开始:${Thread.currentThread().name}")
    delay(2000)
    println("协程结束:${Thread.currentThread().name}")
}